// 1、写功能
// 2、写空函数
// 3、将1放到2里面
// 4、微调



/**
 * cookie存储数据
 * @param {String} key 键
 * @param {String} val 数据
 * @param {Number} time 时间【单位:s】 
 */
function setCookie(key,val,time){
    // 判断如果值val是对象的话，就要转化成JSON数据格式
    if(typeof val === 'Object') val = JSON.stringify(val)

    const d = new Date
    d.setTime( d.getTime() - 1000*60*60*8 + 1000*time )
    document.cookie = `${key}=${val};expires=${d}`
}


/**
 * cookie获取数据
 * @param {String} key 键 
 * @returns 
 */
function getCookie(key){
    // 需求：获取存储的数据
    // 原来键和数据的格式：键=数据; ... 键=数据      例如：name=a; age=b
    
    // 步骤：
    // 1、将字符串转成数组，用【; 】划分    =>   ['name=a','age=b']
    let arr = document.cookie.split('; ')

    // 2、遍历数组获取数组中的每个值item    =>   item = 'name=a' / 'age=b'
    for(let i = 0 ; i < arr.length ; i++){
        let item = arr[i]

        // 3、将字符串item转成数组,按照【=】划分     =>   ['name','a'] / ['age','b']
        let temp = item.split('=')

        // 4、将数组的第一个值当做键key,将数组的第二个值当做值val。判断如果键是name或者age时，就返回对应的数据
        if(temp[0] === key){
            return temp[1]              // 此时return退出的是封装的函数，这里不用forEach遍历，要不然退出的就是forEach这个函数
        }
    }
}


/**
 * cookie删除数据
 * @param {String} key 键
 */
function removeCookie(key){
    // 利用上面封装的cookie存储删除数据，只需要把null赋给数据、把-1赋给时间expires即可
    setCookie(key,null,-1)
}
